<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>let</title>
</head>

<body>
    <script>
        //*1. typeof x//后面声明了反而会报错
        // let x = 4
        // console.log(x);

        // *2.let y = y  使用let声明变量时，只要变量在还没有声明完成前使用，就会报错。

        //*3.let不允许在相同作用域内，重复声明同一个变量。
        //  function fn(a) {
        //     let a = 10

        // }
        // fn()

        // function fun(a) {
        //     {
        //         let a = 3
        //     }
        // }
        // fun()//这样却没问题 因为不在同一作用域

        // *4.内层作用域可以定义外层作用域的同名变量。
        // {
        //     let b = 2
        //     {
        //         let a = 4
        //         console.log(b);
        //     }
        //     console.log(a);
        // }

        // 5.
        // {
        //     let a = 1
        //     {
        //         let a = undefined
        //         console.log(a);
        //     }
        // }


        const a = typeof window !== 'undefined'
            ? window
            : (typeof process === 'object' &&
                typeof require === 'function' &&
                typeof global === 'object')
                ? global
                : this
        console.log(a);
        console.log(window);
    </script>
</body>

</html>